#ifndef __GRID_WORLD__
#define __GRID_WORLD__

#include <vector>
#include <string>
#include <cstdlib>

#include "Node.hxx"

/**
 * The World
 */

class Grid_World
{
public:

	Grid_World();
	~Grid_World();

	bool			load_from( std::string filename );
	std::vector<Action*>&	actions() { return m_actions; }
	State&                  initial_state() { return m_initial_state; }
	State&                  final_state() { return m_final_state; }
        std::vector<Action*>    avaiableActions( State& state );

protected:


protected:

        State                   m_initial_state;
	State                   m_final_state;

	std::vector<Action*>	m_actions;

        unsigned		m_dimension;
	unsigned                m_num_keys;
};

#endif // grid_world.hxx
